#Requires AutoHotkey v2.0
#Include CSV_Pcr.ahk
#Include TextProcessor.ahk ; 仅在测试时包含
#Include FileTool.ahk ; 仅在测试时包含

clip := {
    ; 是否启用检查文件更新(0 不启用, 1 启用)
    checkFileEnabled: 1,
    ; 是否启用粘贴板监听(0 不启用, 1 启用)
    clipCallEnabled: 1,
    ; 保存粘贴板到数据文件(0 不启用, 1 启用)
    clipWriteDataFile: 0,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlCEnabled: 0,
    ; 是否启用热键功能(0 不启用, 1 启用)
    F6Enabled: 1,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlF6Enabled: 1,
    ; 是否启用热键功能(0 不启用, 1 启用)
    F7Enabled: 0,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlF7Enabled: 0,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlVEnabled: 1,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlREnabled: 1,
    ; 是否启用热键功能(0 不启用, 1 启用)
    ctrlAltQEnabled: 1,
    ; 第二目录(存放文件配置，粘贴记录...)
    secondDir: EnvGet("USERPROFILE") "\faintdream\clip",
    ; 配置文件路径
    configFile: A_ScriptDir "\batData.properties",
    ; 数据文件路径
    dataFile: A_ScriptDir "\data.txt",
    ; 粘贴板数据备份文件路径(clip20240620.temp)
    copyFile: "\record\clipRecord" FormatTime("", "yyyyMMdd") ".temp",
    ; 日志文件文件路径
    logFile: "\log\ClipLog.log",
    ; 粘贴方式(目前支持两种：seed 击键， clip 粘贴板)
    pauseMethod: "clip",
    ; 粘贴文本
    texts: [],
    ; 上一次粘贴的文本
    lastText: "",
    ; 下一次将要粘贴的文本
    nextText: "",
    ; 可变粘贴文本索引
    textsVarIndex: [],
    ; 数据文件为空时粘贴的默认文本
    defText: "#无数据#",
    ; 初始索引为 1（AutoHotkey 数组从 1 开始）
    index: 1,
    ; 是否保留索引（1 保留，0 不保留）
    keepIndex: 0,
    ; 上次检测的文件大小
    dataFileSize: 0,
    ; 数据文件是否改变（0 未改变，1 已改变）
    dataFileChanged: 0,
    ; 数据文件原文
    dataFileText: "",
    ; 数据模型(LIST 序列, AUTO-INCREMENT(Auto) 自增, CSV csv表格 暂不支持，后面会添加)
    dataModel: "LIST",
    ; 数据模型不可改变(0 可以改变, 1 不可改变)
    dataModelFinal: 0,
    ; 热字符串
    hotStrs: [],
    ; 热字符串是否启用
    hotStrEnabled: 0
}

; 读写配置
class ClipConfig {
    
    ; CSV处理器
    static csv := CSV_Pcr()

    ; 读取配置
    static read(){
        global clip ; 声明全局变量
    }
    
    ; 写入配置
    static write(){
        global clip ; 声明全局变量
        
	; 首行
	row1 := []
	row1.push("Clip-Attribute")
	row1.push("Clip-Value")
	this.csv.content.push(row1)

	; 属性行
	row := []
	row.push("checkFileEnabled")
	row.push(clip.checkFileEnabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("clipCallEnabled")
	row.push(clip.clipCallEnabled)
	this.csv.content.push(row) ;---------

	; 属性行
	row := []
	row.push("clipWriteDataFile")
	row.push(clip.clipWriteDataFile)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlCEnabled")
	row.push(clip.ctrlCEnabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("F6Enabled")
	row.push(clip.F6Enabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlF6Enabled")
	row.push(clip.ctrlF6Enabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("F7Enabled")
	row.push(clip.F7Enabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlF7Enabled")
	row.push(clip.ctrlF7Enabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlVEnabled")
	row.push(clip.ctrlVEnabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlREnabled")
	row.push(clip.ctrlREnabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("ctrlAltQEnabled")
	row.push(clip.ctrlAltQEnabled)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("secondDir")
	row.push(clip.secondDir)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("configFile")
	row.push(clip.dataFile)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("copyFile")
	row.push(clip.copyFile)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("logFile")
	row.push(clip.logFile)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("pauseMethod")
	row.push(clip.pauseMethod)
	this.csv.content.push(row)

	; 属性行
	; row := []
	; row.push("texts")
	; row.push(clip.texts)
	; this.csv.content.push(row)

	; 属性行
	row := []
	row.push("lastText")
	row.push(clip.lastText)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("nextText")
	row.push(clip.nextText)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("defText")
	row.push(clip.defText)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("index")
	row.push(clip.index)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("keepIndex")
	row.push(clip.keepIndex)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("dataFileSize")
	row.push(clip.dataFileSize)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("dataFileChanged")
	row.push(clip.dataFileChanged)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("dataFileText")
	row.push(clip.dataFileText)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("dataModel")
	row.push(clip.dataModel)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("dataModelFinal")
	row.push(clip.dataModelFinal)
	this.csv.content.push(row)

	; 属性行
	row := []
	row.push("hotStrEnabled")
	row.push(clip.hotStrEnabled)
	this.csv.content.push(row)

	stemp := this.csv.write()
	msgBox(stemp)
    }
}


ClipConfig.write()
